package final_;

/**
 * @Author 小闽
 * @Date 2024/9/9 20:41
 * @PackageName: final_
 * @ClassName: Final
 * @Description: final关键字
 * @Version 1.0
 */
public class Final {
    public static void main(String[] args) {
//        E e = new E();
//        e.TAX_RATE = 0.09;
    }
}

//1）	当不希望类被继承时，可以用final修饰。
// 如果不希望B类继承A类，
// 使用B去继承使用final修饰的A类就会报错
final class A{

}

//class B extends A{
//
//}
//2）当不希望父类的某个方法被子类覆盖或重写（override）时，
//   可以用final关键字来修饰。
class C{
    // 方法hello()被final关键字修饰
    public final void hello(){
        System.out.println("final方法");
    }
}
// 当子类去重写父类中已经被final修饰的方法时，就会出现报错。
class D extends C{
//    @Override
//    public void hello() {
//        super.hello();
//    }
}
//3）	当不希望类的某个属性的值被修改，可以用final修饰。
class E{
    // 当去访问类中被final修饰的属性时也会出现报错，无法修改。
    public final double TAX_RATE=0.08;
}
// 4）当不希望某个局部变量被修改，可以使用final修饰。
class F{
//    public void cry(){
//        final double TAX_RATE=0.08;
//         TAX_RATE = 0.09;
//        System.out.println("final方法");
//    }
}